Property/it

Introduzione

Una proprietà è una parte di informazione sotto forma di numero o di stringa di testo che viene allegata a un documento di FreeCAD oppure a un oggetto di un documento. Le proprietà pubbliche possono essere visualizzate e, se consentito, modificate nell'editore delle proprietà.

In FreeCAD le proprietà svolgono un ruolo molto importante. Dato che gli oggetti in FreeCAD sono "parametrici", ciò significa che il loro comportamento è definito dalle loro proprietà e dal modo in cui queste proprietà vengono utilizzate come input per i loro metodi delle classi. Vedere anche FeaturePython Custom Properties e PropertyLink: InList e OutList

Tutti i tipi di proprietà

In FreeCAD gli oggetti script personalizzati possono utilizzare uno qualsiasi dei tipi di proprietà definiti nel sistema di base:

Name Unit (if any) Remark
Acceleration m/s^2
AmountOfSubstance mol
Angle °
Area m^2
Bool
BoolList
Color
ColorList
CurrentDensity A/m^2
Density kg/m^3
Direction
DissipationRate m^2/s^3
Distance m
DynamicViscosity Pa*s
ElectricalCapacitance F
ElectricalConductance S
ElectricalConductivity S/m
ElectricalInductance H
ElectricalResistance Ohm
ElectricCharge C
ElectricCurrent A
ElectricPotential V
Enumeration
ExpressionEngine
File
FileIncluded
Float
FloatConstraint
FloatList
Font
Force N
Frequency Hz
HeatFlux W/m^2
Integer
IntegerConstraint
IntegerList
IntegerSet
InverseArea 1/m^2
InverseLength 1/m
InverseVolume 1/m^3
KinematicViscosity m^2/s
Length m
Link
LinkChild
LinkGlobal
LinkHidden
LinkList
LinkListChild
LinkListGlobal
LinkListHidden
LinkSub
LinkSubChild
LinkSubGlobal
LinkSubHidden
LinkSubList
LinkSubListChild
LinkSubListGlobal
LinkSubListHidden
LuminousIntensity cd
MagneticFieldStrength A/m
MagneticFlux Wb or V*s
MagneticFluxDensity T
Magnetization A/m
Map
Mass kg
Material
MaterialList
Matrix
PartShape a Part property, is accessed as
Part::PropertyPartShape
Path
Percent
PersistentObject
Placement
PlacementLink
PlacementList
Position
Power W
Precision
Pressure Pa
PythonObject
Quantity
QuantityConstraint
Rotation
ShearModulus Pa
SpecificEnergy m^2/s^2 or J/kg
SpecificHeat J/kg/K
Speed m/s
Stiffness m/s^2
Stress Pa
String
StringList
Temperature K
ThermalConductivity W/m/K
ThermalExpansionCoefficient 1/K
ThermalTransferCoefficient W/m^2/K
Time s
UltimateTensileStrength Pa
UUID
VacuumPermittivity s^4*A^2 / (m^3*kg)
Vector
VectorDistance
VectorList
Velocity m/s
Volume l or m^3
VolumeFlowRate l/s or m^3/s
VolumetricThermalExpansionCoefficient 1/K
Work J
XLink
XLinkList
XLinkSub
XLinkSubList
YieldStrength Pa
YoungsModulus Pa


Internamente, il nome della proprietà ha il prefisso App::Property:

App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...

Ricordare che queste sono della proprietà types. Un singolo oggetto può avere molte proprietà dello stesso tipo, ma con nomi diversi.

Per esempio:

obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")

Ciò indica un oggetto con tre proprietà di tipo "Float", denominate rispettivamente "Length", "Width", e "Height".

Script

Vedere anche: Script di base per FreeCAD

Prima viene creato un oggetto script, quindi gli vengono assegnate le proprietà.

obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")

obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")

In generale, le proprietà Data sono assegnate usando il metodo addProperty() dell'oggetto. D'altra parte, le proprietà View sono normalmente fornite automaticamente dall'oggetto genitore da cui deriva l'oggetto script.

Per esempio:

Tuttavia, le proprietà View possono anche essere assegnate usando il metodo addProperty() dell'oggetto fornitore della vista.

obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")

Codice sorgente

Nel codice sorgente, le proprietà si trovano in vari file src/App/Property*.

Vengono importati e inizializzati in src/App/Application.cpp.

#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"